# ========================================================
# GPU求解器动态材料参数提取验证测试
# ========================================================
# 测试目标：验证材料参数从TCL正确传递到GPU
# ========================================================

puts "\n钢筋混凝土GPU求解器 - 动态参数提取测试"
puts "==================================================="

# 清除之前的模型
wipe

# 建立模型
model BasicBuilder -ndm 2 -ndf 2

# 创建节点
node 1   0.0  0.0
node 2   1.0  0.0
node 3   1.0  1.0
node 4   0.0  1.0

# ========== 关键测试：使用非标准参数 ==========
# 故意使用与默认值不同的参数来验证动态提取
puts "定义材料: ElasticIsotropic, E=40 GPa, nu=0.25, rho=2500 kg/m³"
nDMaterial ElasticIsotropic 1  40.0e9  0.25  2500

# 创建Quad单元，厚度=0.3m（非默认值）
puts "创建Quad单元, 厚度=0.3m"
element quad 1  1 2 3 4  0.3  PlaneStress  1

# 边界条件
fix 1 1 1
fix 2 1 1

# 荷载
timeSeries Linear 1
pattern Plain 1 1 {
    load 3 0.0 -1000.0
}

# ========== GPU求解器 ==========
puts "\n=== GPU求解器测试 ==="
system GPUSolver -debugLevel 2 -enableModule matrixAssembly

# 约束和分析
constraints Plain
numberer RCM
test NormDispIncr 1.0e-8 10
algorithm Newton
integrator LoadControl 1.0
analysis Static

puts "\n运行GPU分析..."
analyze 1

puts "✓ GPU分析成功完成"

# 获取结果
set disp3_x [nodeDisp 3 1]
set disp3_y [nodeDisp 3 2]
puts "节点3位移: X=[format %.10e $disp3_x]  Y=[format %.10e $disp3_y]"

puts "\n=========================================="
puts "验证GPU调试输出 (上方):"
puts "=========================================="
puts "应该看到:"
puts "  \[GPUMaterialExtractor\] Quad\[1\] ElasticIsotropic: E=4e+10, nu=0.25, t=0.3, rho=2500"
puts ""
puts "如果参数正确，说明动态提取成功！"
puts "如果参数不对，说明仍在使用硬编码默认值"
puts "=========================================="

wipe
